package cn.group.hotel2.mapper;

import cn.group.hotel2.pojo.entity.Clean;
import cn.group.hotel2.pojo.vo.CleanListCountVO;
import cn.group.hotel2.pojo.vo.CleanListItemVO;
import cn.group.hotel2.pojo.vo.CleanStandardVO;
import org.springframework.stereotype.Repository;

import java.util.List;

/**
 * 处理房间清洁数据相关的mapper接口
 *
 * @author wcl
 * @version 0.0.1
 * @date 2022/11/20
 */
@Repository
public interface CleanMapper {

    /**
     * 添加房间清洁
     * @param clean 房间清洁实体类
     * @return 受影响的行数
     */
    int insert(Clean clean);

    /**
     * 批量添加房间清洁
     * @param cleans 房间清洁实体类的集合
     * @return 受影响的行数
     */
    int insertBatch(List<Clean> cleans);

    /**
     * 根据id删除房间清洁
     * @param id 记录id
     * @return 受影响的行数
     */
    int deleteById(Long id);

    /**
     * 批量删除房间清洁
     * @param ids 多条记录id
     * @return 受影响的行数
     */
    int deleteBatch(Long...ids);

    /**
     * 根据id修改房间清洁
     * @param clean 房间清洁实体类
     * @return 受影响的行数
     */
    int update(Clean clean);

    /**
     * 统计房间清洁表中数据的数量
     * @return 统计数量
     */
    int count();

    /**
     * 根据客房名称查询对应的数据是否存在
     * @param roomTitle 客房名称
     * @return 查询结果
     */
    int countByRoomTitle(String roomTitle);

    /**
     * 根据id查询房间清洁详情
     * @param id 记录id
     * @return 查询详情结果
     */
    CleanStandardVO getStandardById(Long id);

    /**
     * 查询房间清洁列表
     * @return 查询列表结果
     */
    List<CleanListItemVO> list();

    /**
     * 根据所选的页数来分页查询
     * @param pageNum 需要跳过的记录数
     * @return 查询列表结果
     */
    List<CleanListItemVO> listByPageNum(Long pageNum);

    /**
     * 查询列表所有的数据以统计其数量
     * @return 查询列表结果
     */
    List<CleanListCountVO> listCount();

    /**
     * 查询处于待清洁状态下的清洁列表
     * @return 查询到的结果
     */
    List<CleanListItemVO> listWaitClean();

    /**
     * 查询处于正在清洁状态下的清洁列表
     * @return 查询到的结果
     */
    List<CleanListItemVO> listCurrentClean();

    /**
     * 查询处于完成清洁状态下的清洁列表
     * @return 查询到的结果
     */
    List<CleanListItemVO> listFinishClean();

    /**
     * 根据所选的页数来分页查询
     * @param pageNum 需要跳过的记录数
     * @return 查询列表结果
     */
    List<CleanListItemVO> listWaitCleanByPageNum(Long pageNum);

    /**
     * 查询列表所有的数据以统计其数量
     * @return 查询列表结果
     */
    List<CleanListCountVO> listWaitCleanCount();

    /**
     * 根据所选的页数来分页查询
     * @param pageNum 需要跳过的记录数
     * @return 查询列表结果
     */
    List<CleanListItemVO> listCurrentCleanByPageNum(Long pageNum);

    /**
     * 查询列表所有的数据以统计其数量
     * @return 查询列表结果
     */
    List<CleanListCountVO> listCurrentCleanCount();

    /**
     * 根据所选的页数来分页查询
     * @param pageNum 需要跳过的记录数
     * @return 查询列表结果
     */
    List<CleanListItemVO> listFinishCleanByPageNum(Long pageNum);

    /**
     * 查询列表所有的数据以统计其数量
     * @return 查询列表结果
     */
    List<CleanListCountVO> listFinishCleanCount();
}
